package com.dtx.qiku.store;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.dtx.qiku.utils.ProUtils;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class FileStore implements Store {

    // 设置仓库的基本路径
    private static final File BASE_DIR = new File(ProUtils.getProperty("fileStore.basedir"));

    private static final String UTF_8 = "utf-8";

    // 设置 数据库的 地址
    private File dataDir = null;


    public FileStore(String dbName) {

        this.dataDir = new File(BASE_DIR, dbName);

        // 递归地创建仓库目录
        this.dataDir.mkdirs();
    }

    @Override
    public <T> void write(String tableName, List<T> data) throws IOException {
        //数据存储的位置
        File file = new File(dataDir, tableName + ".db");

        // 将 List 序列化成 字符串，并存入到 File 中
        String text = JSONArray.toJSONString(data, SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteDateUseDateFormat,
                SerializerFeature.PrettyFormat);

        // 存储到指定的文件中
        FileUtils.writeStringToFile(file,text,UTF_8);
    }

    @Override
    public <T> List<T> read(String tableName,Class<T> clz) throws IOException{
        //数据存储的位置
        File file = new File(dataDir, tableName + ".db");

        // 如果 文件不存在，则新建
        if(!file.exists()) file.createNewFile();

        // 将数据从文件中读入到内容
        String text = FileUtils.readFileToString(file,UTF_8);
        return JSONArray.parseArray(text,clz);

    }






}
